package com.qf.team2.netdisc.dao;

import com.qf.team2.netdisc.common.pojo.entity.Document;
import com.qf.team2.netdisc.common.pojo.entity.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 文件上传数据接口
 *
 * @author Simon_Wong
 * @date 2021/05/26 10:40
 */
public interface DocumentUploadMapper {
    // Document selectDocumentByUserId(String username);

    /**
     * 查询父目录的名字用于拼接
     *
     * @param id     文件id
     * @param userId 用户id
     * @return {@link Document}
     */
    Document selectDocumentByFileId(@Param("id") Integer id,
                                    @Param("userId") Integer userId);

    /**
     * 上传成功数据库新增文件
     *
     * @param name        名字
     * @param size        文件大小
     * @param url         url
     * @param userId      用户id
     * @param isDirectory 是否目录
     * @param isRoot      是否根目录
     * @param md5         md5
     * @return {@link Document}
     */
    Document insertFile(@Param("name") String name,
                        @Param("size") Long size,
                        @Param("url") String url,
                        @Param("userId") Integer userId,
                        @Param("isDirectory") Integer isDirectory,
                        @Param("isRoot") Integer isRoot,
                        @Param("md5") String md5);
    //name=#{name},user_id=#{userId},parent_id=#{parentId},is_directory=#{isDirectory},is_root=#{isRoot}

    /**
     * 根据文件id查找文件所属的用户
     *
     * @param id 文件id
     * @return {@link User}
     */
    User selectDocumentById(Integer id);

    /**
     * 根据文件id修改文件夹大小
     *
     * @param size   新的大小
     * @param url    url
     * @param userId 用户id
     * @return {@link Integer}
     */
    Integer updateById(@Param("size") Long size,
                       @Param("url") String url,
                       @Param("userId") Integer userId);

    /**
     * 根据id修改用户当前占用的容量
     *
     * @param userId 用户id
     * @param size   新的容量大小
     * @return {@link User}
     */
    User updateCapacityById(@Param("id") Integer userId,
                            @Param("capacity") Long size);

    /**
     * todo 注释
     * 选择文档id和用户id
     *
     * @param url    url
     * @param userId 用户id
     * @return {@link List<Document>}
     */
    List<Document> selectDocumentByIdAndUserId(@Param("url") String url,
                                               @Param("userId") Integer userId);

}
